/***********************************************************************************
 * 文件名： typedef.h
 * 版本： 1
 * 说明：
 * 		九齐 NY8 系列MCU的类型定义文件。 统一变量类型，和常用关键字。
 * 修改记录：
 * 	2022/04/09: 初版。 刘言。
***********************************************************************************/
#ifndef _TYPEDEF_H_
#define _TYPEDEF_H_

#include <stdint.h>	// 编译器库文件

#ifndef __cplusplus /* In C++, 'bool', 'true' and 'false' and keywords */
#define bool    uint8_t
#define true    1
#define false   0
#endif
#define _Bool   bool


typedef unsigned char  			byte;
typedef unsigned char  			u8;
typedef uint16_t  			    u16;
typedef uint32_t  			    u32;

typedef signed char  			s8;
typedef int16_t  			    s16;
typedef int32_t  			    s32;

typedef volatile unsigned char  vu8;
typedef volatile uint16_t 	    vu16;
typedef volatile uint32_t 	    vu32;

typedef volatile signed char  	vs8;
typedef volatile int16_t  		vs16;
typedef volatile int32_t  	    vs32;


// 非51内核定义以下以关键字兼容51代码
// NY8的 __data 和 __code 仅用于定义指针时标记指针是指向 RAM 还是 ROM 的指针，定义时写在最前面，若不进行标记，指针变量将多占1个字节。
    #define data    __data
    #define idata 
    #define pdata 
    #define xdata     
    #define code    __code
    #define C51_CODE __code
    #define bit		bool
//非STM8_IAR单片机定义以下关键字兼容STM8代码
    #define     __far
    #define     __near 
    #define     __no_init
    #define     __eeprom


// 申明不需要初始化的变量
#define NO_INIT
// 常规内联
#define IN_LINE     			inline
// 强制内联
#define FORCE_IN_LINE			inline
// 静态内联
#define STATIC_IN_LINE			static inline
// 静态强制内联
#define STATIC_FORCE_IN_LINE   	static inline

// 注意：此MCU高优化等级时使用 inline 可能异常。

typedef struct _tm
{
	u8 Second;
	u8 Minute;
	u8 Hour;
	u8 Day;
	u8 Week;
	u8 Month;
	u8 Year;
	u8 Zone;
}tm_t;


#endif
